
# 本例使用两组刺激-行动，构成循环动作。没有使用状态变化。

def main():
    lib = Lib()
    # 当在【静息】状态接收到【咚】刺激，发出【敲敲】动作
    lib.reflect("咚", "静息", "敲敲")
    # 当在【静息】状态接收到【叮】刺激，发出【拍拍】动作
    lib.reflect("叮", "静息", "拍拍")
    test(lib, A())      #test默认工作5秒，time=5


from ai import Lib, Stater, test, Timer, Passer, EnvMesEvent


class A(Stater):
    def reg_event(self, frame):
        frame.act_callback.append(self.reply)

        # 在一秒后发出“咚”的刺激
        p = Passer(1)
        @p.bindend
        def f():
            frame.post_event(EnvMesEvent("咚"))
        p.reg_event(frame)

    def reply(self, frame, e):
        # 如果环境接收到【敲敲】动作，发出【叮】刺激
        # 如果环境接收到【拍拍】动作，发出【咚】刺激
        a = e.tag
        if a == "敲敲":
            r = "叮"
        else:
            r = "咚"

        p = Passer(1)
        @p.bindend
        def f():
            # ~ print("咚")
            # ~ frame.post_event(EnvMesEvent("咚"))
            frame.post_event(EnvMesEvent(r))
        p.reg_event(frame)


main()
